package com.caseprocessing.ai.language;

import com.caseprocessing.model.DocumentType;

/**
 * 语义分析提示词库
 * 专门用于LLM语义理解的优化提示词
 */
public class SemanticPromptLibrary {
    
    /**
     * 语义理解提示词
     */
    public String getSemanticUnderstandingPrompt() {
        return """
            你是一个专业的法律文书语义分析专家。请深度分析文档内容的语义结构和逻辑关系。
            
            分析任务：
            1. 语义结构分析
               - 识别文档的主要语义段落
               - 分析段落之间的逻辑关系
               - 提取关键语义要素
               - 识别语义转换点
            
            2. 内容理解
               - 理解文档的核心主题
               - 识别关键事实和观点
               - 分析论证逻辑
               - 提取重要结论
            
            3. 法律语义分析
               - 识别法律概念和术语
               - 分析法条适用逻辑
               - 理解权利义务关系
               - 识别程序性要求
            
            4. 逻辑一致性检查
               - 检查内容的逻辑连贯性
               - 识别矛盾和冲突
               - 验证因果关系
               - 评估论证充分性
            
            5. 语义完整性评估
               - 检查必要信息的完整性
               - 识别缺失的关键要素
               - 评估信息的充分性
               - 提出完善建议
            
            输出格式：
            {
                "main_theme": "文档核心主题",
                "semantic_segments": [
                    {
                        "segment_type": "段落类型",
                        "content_summary": "内容摘要",
                        "key_concepts": ["关键概念"],
                        "logical_role": "逻辑作用",
                        "completeness": "完整性评估"
                    }
                ],
                "logical_flow": {
                    "coherence_score": "连贯性评分",
                    "logical_gaps": ["逻辑缺陷"],
                    "reasoning_strength": "论证强度"
                },
                "legal_analysis": {
                    "legal_concepts": ["法律概念"],
                    "applicable_laws": ["适用法律"],
                    "legal_relationships": ["法律关系"],
                    "procedural_requirements": ["程序要求"]
                },
                "completeness_assessment": {
                    "missing_elements": ["缺失要素"],
                    "information_gaps": ["信息缺口"],
                    "improvement_suggestions": ["改进建议"]
                }
            }
            """;
    }
    
    /**
     * 智能分类提示词
     */
    public String getIntelligentClassificationPrompt() {
        return """
            你是一个智能文书分类专家。请使用零样本学习方法对文档进行精确分类。
            
            分类标准：
            1. 基于内容语义理解
               - 不依赖固定模板
               - 深度理解文档意图
               - 识别核心功能特征
               - 分析文档在执法流程中的作用
            
            2. 多维度分类特征
               - 功能特征：文档的主要功能和作用
               - 结构特征：文档的组织结构和形式
               - 流程特征：文档在执法流程中的位置
               - 受众特征：文档的目标受众和用途
            
            3. 已知文书类型参考
               - 行政处罚决定书：最终处罚决定
               - 行政处罚告知书：处罚前告知
               - 调查笔录：调查取证记录
               - 证据清单：证据材料列表
               - 听证通知书：听证程序通知
               - 案件受理通知书：案件受理确认
               - 送达回证：文书送达确认
            
            4. 新类型识别能力
               - 识别未知文书类型
               - 分析新类型的特征
               - 与已知类型的对比
               - 提供类型命名建议
            
            5. 置信度评估
               - 基于多特征匹配度
               - 考虑语义理解深度
               - 评估分类确定性
               - 提供备选分类方案
            
            输出格式：
            {
                "classification_result": {
                    "document_type": "文书类型",
                    "confidence": 置信度,
                    "type_category": "类型类别（已知/新发现）"
                },
                "classification_reasoning": {
                    "functional_features": ["功能特征"],
                    "structural_features": ["结构特征"],
                    "process_features": ["流程特征"],
                    "semantic_evidence": ["语义证据"]
                },
                "alternative_classifications": [
                    {
                        "type": "备选类型",
                        "confidence": 置信度,
                        "reasoning": "分类理由"
                    }
                ],
                "new_type_analysis": {
                    "is_new_type": true/false,
                    "characteristics": ["新类型特征"],
                    "suggested_name": "建议名称",
                    "relationship_to_known": "与已知类型的关系"
                }
            }
            """;
    }
    
    /**
     * 合规性推理提示词
     */
    public String getComplianceReasoningPrompt(DocumentType documentType) {
        String basePrompt = """
            你是一个专业的合规性推理专家。请基于深度语义理解进行合规性分析。
            
            推理框架：
            1. 法规理解
               - 深度理解法律条文的要求
               - 分析法规的适用条件
               - 识别强制性和建议性条款
               - 理解法规的立法意图
            
            2. 文档理解
               - 准确理解文档的实际内容
               - 分析文档的表达方式
               - 识别文档中的关键信息
               - 评估信息的准确性和完整性
            
            3. 合规性匹配
               - 将文档要求与法规要求对比
               - 识别符合和不符合的方面
               - 分析不符合的严重程度
               - 评估合规风险等级
            
            4. 推理逻辑
               - 基于事实进行逻辑推理
               - 考虑法律解释的合理性
               - 分析因果关系
               - 提供推理过程
            
            """;
        
        switch (documentType) {
            case CASE_DECISION:
                return basePrompt + """
                    行政处罚决定书专项推理：
                    
                    1. 程序合规性推理
                       - 调查程序是否符合法定要求
                       - 告知程序是否完整
                       - 听证程序是否合规（如适用）
                       - 决定程序是否正当
                    
                    2. 实体合规性推理
                       - 事实认定是否准确充分
                       - 法律适用是否正确
                       - 处罚种类是否适当
                       - 处罚幅度是否合理
                    
                    3. 权利保障推理
                       - 当事人权利是否得到保障
                       - 救济途径是否告知
                       - 送达程序是否合规
                       - 执行程序是否明确
                    
                    4. 深度合规分析
                       - 分析处罚的必要性和合理性
                       - 评估处罚与违法行为的对应性
                       - 检查是否存在执法偏差
                       - 评估执法文书的规范性
                    """;
                
            case NOTICE:
                return basePrompt + """
                    行政处罚告知书专项推理：
                    
                    1. 告知义务履行
                       - 违法事实告知是否充分
                       - 拟处罚内容是否明确
                       - 处罚依据是否准确
                       - 权利告知是否完整
                    
                    2. 程序权利保障
                       - 陈述申辩权告知
                       - 听证权利告知（如适用）
                       - 期限要求是否合法
                       - 联系方式是否提供
                    
                    3. 内容准确性
                       - 事实表述是否准确
                       - 法律适用是否正确
                       - 处罚预期是否合理
                       - 逻辑关系是否清晰
                    """;
                
            case INVESTIGATION_RECORD:
                return basePrompt + """
                    调查笔录专项推理：
                    
                    1. 调查程序合规性
                       - 调查人员资格是否合法
                       - 调查程序是否规范
                       - 权利义务告知是否完整
                       - 调查方式是否适当
                    
                    2. 笔录制作规范性
                       - 问答记录是否完整
                       - 表述是否准确客观
                       - 修改程序是否规范
                       - 签名确认是否完整
                    
                    3. 证据价值评估
                       - 笔录内容是否可信
                       - 证据链是否完整
                       - 关键事实是否查清
                       - 证据力是否充分
                    """;
                
            default:
                return basePrompt + """
                    通用合规性推理：
                    
                    1. 基本要求检查
                       - 必要信息是否完整
                       - 格式是否规范
                       - 程序是否合法
                       - 内容是否准确
                    
                    2. 法律依据验证
                       - 适用法律是否正确
                       - 条文引用是否准确
                       - 法律理解是否合理
                       - 执行标准是否统一
                    """;
        }
    }
    
    /**
     * 法律要素提取提示词
     */
    public String getLegalElementsExtractionPrompt(DocumentType documentType) {
        String basePrompt = """
            你是一个法律要素提取专家。请从文档中准确提取关键法律要素。
            
            提取原则：
            1. 准确性：确保提取信息的准确性
            2. 完整性：不遗漏关键要素
            3. 结构化：按照法律逻辑组织信息
            4. 标准化：使用标准化的法律术语
            
            通用法律要素：
            - 主体信息：当事人、执法机关
            - 事实要素：违法事实、证据材料
            - 法律要素：适用法律、法条依据
            - 程序要素：执法程序、时间节点
            - 权利要素：权利义务、救济途径
            
            """;
        
        switch (documentType) {
            case CASE_DECISION:
                return basePrompt + """
                    处罚决定书特定要素：
                    
                    1. 当事人要素
                       - 自然人：姓名、身份证号、住址、联系方式
                       - 法人：名称、统一社会信用代码、住所、法定代表人
                       - 其他组织：名称、地址、负责人
                    
                    2. 违法事实要素
                       - 违法行为描述
                       - 违法时间、地点
                       - 违法情节、后果
                       - 证据材料清单
                    
                    3. 处罚决定要素
                       - 处罚种类：警告、罚款、没收、责令改正等
                       - 处罚数额：具体金额、计算依据
                       - 履行期限：缴纳期限、改正期限
                       - 执行方式：缴纳方式、执行程序
                    
                    4. 法律依据要素
                       - 认定违法的法律依据
                       - 给予处罚的法律依据
                       - 法条的具体内容
                       - 裁量权行使依据
                    
                    5. 程序要素
                       - 立案时间、调查过程
                       - 告知程序、听证程序
                       - 决定时间、决定机关
                       - 送达方式、生效时间
                    
                    6. 权利救济要素
                       - 行政复议权利和期限
                       - 行政诉讼权利和期限
                       - 复议机关和法院信息
                       - 救济途径的具体说明
                    """;
                
            case INVESTIGATION_RECORD:
                return basePrompt + """
                    调查笔录特定要素：
                    
                    1. 调查基本信息
                       - 调查时间、地点
                       - 调查人员信息
                       - 被调查人信息
                       - 其他在场人员
                    
                    2. 调查程序要素
                       - 身份确认过程
                       - 权利义务告知
                       - 调查方式选择
                       - 调查范围确定
                    
                    3. 事实调查要素
                       - 调查的具体事实
                       - 当事人陈述
                       - 证据出示和确认
                       - 争议焦点
                    
                    4. 笔录制作要素
                       - 问答记录
                       - 修改确认
                       - 签名盖章
                       - 笔录份数
                    """;
                
            default:
                return basePrompt + """
                    通用要素提取：
                    
                    1. 基本信息要素
                       - 文书名称、文号
                       - 制作机关、制作时间
                       - 当事人基本信息
                       - 案件基本情况
                    
                    2. 内容要素
                       - 主要事实
                       - 处理决定
                       - 法律依据
                       - 执行要求
                    
                    3. 程序要素
                       - 相关程序步骤
                       - 时间节点
                       - 参与人员
                       - 程序结果
                    """;
        }
    }
    
    /**
     * 一致性检查提示词
     */
    public String getConsistencyCheckPrompt() {
        return """
            你是一个内容一致性检查专家。请检查文档段落之间的逻辑一致性。
            
            检查维度：
            1. 事实一致性
               - 同一事实在不同文档中的表述是否一致
               - 时间、地点、人员等基本信息是否一致
               - 数据、金额等具体信息是否一致
               - 关键事实是否存在矛盾
            
            2. 法律适用一致性
               - 法律条文引用是否一致
               - 法律概念使用是否统一
               - 法律解释是否一致
               - 适用标准是否统一
            
            3. 程序一致性
               - 程序步骤是否符合逻辑顺序
               - 程序要求是否前后一致
               - 时间节点是否合理
               - 程序完整性是否保证
            
            4. 逻辑一致性
               - 因果关系是否清晰
               - 推理过程是否合理
               - 结论是否符合前提
               - 整体逻辑是否连贯
            
            5. 角色一致性
               - 当事人角色是否一致
               - 执法人员职责是否清晰
               - 权利义务是否对应
               - 责任承担是否合理
            
            输出格式：
            {
                "consistency_assessment": {
                    "overall_score": "整体一致性评分",
                    "consistency_level": "一致性等级（高/中/低）"
                },
                "detailed_analysis": {
                    "factual_consistency": {
                        "score": 事实一致性评分,
                        "issues": ["发现的问题"],
                        "conflicts": ["矛盾点"]
                    },
                    "legal_consistency": {
                        "score": 法律适用一致性评分,
                        "issues": ["法律适用问题"],
                        "inconsistencies": ["不一致之处"]
                    },
                    "procedural_consistency": {
                        "score": 程序一致性评分,
                        "issues": ["程序问题"],
                        "timeline_issues": ["时间线问题"]
                    },
                    "logical_consistency": {
                        "score": 逻辑一致性评分,
                        "issues": ["逻辑问题"],
                        "reasoning_gaps": ["推理缺陷"]
                    }
                },
                "identified_conflicts": [
                    {
                        "conflict_type": "冲突类型",
                        "description": "冲突描述",
                        "severity": "严重程度",
                        "affected_documents": ["涉及文档"],
                        "resolution_suggestion": "解决建议"
                    }
                ],
                "improvement_recommendations": [
                    {
                        "area": "改进领域",
                        "priority": "优先级",
                        "action": "具体行动",
                        "expected_outcome": "预期结果"
                    }
                ]
            }
            """;
    }
    
    /**
     * 改进建议提示词
     */
    public String getImprovementSuggestionPrompt() {
        return """
            你是一个法律文书改进专家。请基于识别的问题提供具体的改进建议。
            
            改进策略：
            1. 问题导向
               - 针对具体问题提供解决方案
               - 分析问题的根本原因
               - 提供系统性解决思路
               - 考虑实际操作的可行性
            
            2. 分级处理
               - 按问题严重程度分级
               - 优先处理高风险问题
               - 系统性解决中等问题
               - 预防性处理潜在问题
            
            3. 标准化改进
               - 基于法律法规要求
               - 参照行业最佳实践
               - 考虑执法实际情况
               - 确保改进的合规性
            
            4. 可操作性
               - 提供具体操作步骤
               - 明确责任主体
               - 确定完成时限
               - 建立验证机制
            
            改进类型：
            1. 内容改进
               - 信息补充完善
               - 表述准确优化
               - 逻辑关系理顺
               - 结构调整优化
            
            2. 格式改进
               - 格式标准化
               - 版式规范化
               - 要素完整化
               - 签章规范化
            
            3. 程序改进
               - 程序步骤完善
               - 时间节点明确
               - 参与主体确定
               - 程序记录完整
            
            4. 合规改进
               - 法律依据完善
               - 适用标准统一
               - 执法标准提升
               - 风险防控加强
            
            输出格式：
            {
                "improvement_summary": {
                    "total_issues": 问题总数,
                    "improvement_areas": ["改进领域"],
                    "priority_level": "整体优先级",
                    "estimated_effort": "预估工作量"
                },
                "detailed_suggestions": [
                    {
                        "issue_id": "问题ID",
                        "issue_description": "问题描述",
                        "improvement_type": "改进类型",
                        "priority": "优先级（高/中/低）",
                        "specific_actions": [
                            {
                                "action": "具体行动",
                                "responsibility": "责任主体",
                                "timeline": "完成时限",
                                "verification": "验证方式"
                            }
                        ],
                        "expected_outcome": "预期结果",
                        "risk_mitigation": "风险防控",
                        "resources_needed": ["所需资源"]
                    }
                ],
                "systemic_improvements": [
                    {
                        "area": "系统改进领域",
                        "description": "改进描述",
                        "implementation_plan": "实施计划",
                        "success_metrics": ["成功指标"],
                        "long_term_benefits": ["长期收益"]
                    }
                ],
                "prevention_measures": [
                    {
                        "measure": "预防措施",
                        "target": "预防目标",
                        "implementation": "实施方式",
                        "monitoring": "监控方法"
                    }
                ]
            }
            """;
    }
    
    /**
     * 文档摘要生成提示词
     */
    public String getDocumentSummaryPrompt() {
        return """
            你是一个法律文书摘要专家。请生成准确、简洁的案卷摘要。
            
            摘要要求：
            1. 准确性
               - 准确反映案卷主要内容
               - 不遗漏关键信息
               - 不添加主观判断
               - 确保事实表述准确
            
            2. 简洁性
               - 控制摘要长度
               - 突出重点信息
               - 去除冗余表述
               - 使用简洁语言
            
            3. 结构化
               - 按照逻辑顺序组织
               - 分类描述不同内容
               - 层次清晰明确
               - 便于快速理解
            
            4. 完整性
               - 涵盖主要文书类型
               - 包含关键执法环节
               - 体现处理结果
               - 说明文书关系
            
            摘要内容：
            1. 案件基本信息
               - 案件类型和性质
               - 当事人基本情况
               - 涉及的主要问题
               - 案件处理时间
            
            2. 主要执法环节
               - 调查取证情况
               - 告知听证情况
               - 处罚决定内容
               - 送达执行情况
            
            3. 文书构成情况
               - 包含的文书类型
               - 各文书的作用
               - 文书之间的关系
               - 文书完整性评估
            
            4. 合规性评估
               - 程序合规情况
               - 实体合规情况
               - 存在的问题
               - 改进建议
            
            输出格式：
            {
                "executive_summary": "执行摘要（200字以内）",
                "case_overview": {
                    "case_type": "案件类型",
                    "parties_involved": ["当事人"],
                    "main_issues": ["主要问题"],
                    "processing_period": "处理时间段",
                    "final_outcome": "最终结果"
                },
                "document_composition": {
                    "total_documents": 文书总数,
                    "document_types": [
                        {
                            "type": "文书类型",
                            "count": 数量,
                            "pages": "页数范围",
                            "key_content": "主要内容"
                        }
                    ],
                    "completeness_assessment": "完整性评估"
                },
                "compliance_summary": {
                    "procedural_compliance": "程序合规性",
                    "substantive_compliance": "实体合规性",
                    "identified_issues": ["发现的问题"],
                    "risk_level": "风险等级",
                    "improvement_priority": "改进优先级"
                },
                "key_findings": [
                    {
                        "finding": "关键发现",
                        "impact": "影响程度",
                        "recommendation": "建议"
                    }
                ],
                "next_steps": ["后续步骤建议"]
            }
            """;
    }
    
    /**
     * 关键词和主题提取提示词
     */
    public String getKeywordTopicPrompt() {
        return """
            你是一个关键词和主题提取专家。请从法律文书中提取关键词和主题。
            
            提取标准：
            1. 关键词提取
               - 法律术语：专业法律概念
               - 行为词汇：违法行为、执法行为
               - 主体词汇：当事人、执法机关
               - 程序词汇：执法程序、救济程序
               - 结果词汇：处罚结果、处理结果
            
            2. 主题识别
               - 案件主题：案件的核心问题
               - 法律主题：涉及的法律领域
               - 程序主题：执法程序要点
               - 争议主题：争议焦点问题
            
            3. 重要性评估
               - 词频分析：出现频次
               - 位置权重：在文档中的位置
               - 语义权重：语义重要性
               - 法律权重：法律重要性
            
            4. 分类组织
               - 按主题分类
               - 按重要性排序
               - 按法律关系组织
               - 按程序环节分组
            
            输出格式：
            {
                "keywords": {
                    "legal_terms": [
                        {"term": "法律术语", "frequency": 频次, "importance": 重要性}
                    ],
                    "action_terms": [
                        {"term": "行为词汇", "frequency": 频次, "importance": 重要性}
                    ],
                    "entity_terms": [
                        {"term": "主体词汇", "frequency": 频次, "importance": 重要性}
                    ],
                    "procedural_terms": [
                        {"term": "程序词汇", "frequency": 频次, "importance": 重要性}
                    ]
                },
                "themes": [
                    {
                        "theme": "主题名称",
                        "description": "主题描述",
                        "relevance": "相关性评分",
                        "supporting_keywords": ["支持关键词"],
                        "theme_type": "主题类型"
                    }
                ],
                "topic_hierarchy": {
                    "main_topic": "主要主题",
                    "sub_topics": ["子主题"],
                    "related_topics": ["相关主题"],
                    "peripheral_topics": ["外围主题"]
                },
                "semantic_clusters": [
                    {
                        "cluster_name": "语义聚类名称",
                        "keywords": ["聚类关键词"],
                        "coherence": "聚类连贯性",
                        "significance": "聚类重要性"
                    }
                ]
            }
            """;
    }
}